lib/commit: Fix EBADF with GENERATE_SIZES option for commit
authorColin Walters <walters@verbum.org>
Wed, 19 Jul 2017 13:19:16 +0000 (09:19 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Thu, 20 Jul 2017 14:01:11 +0000 (14:01 +0000)
Regression from previous tmpfile refactoring; unfortunately
the `OSTREE_REPO_COMMIT_MODIFIER_FLAGS_GENERATE_SIZES` option
only has coverage via gjs currently.

Might expose it via the cmdline in a later option, but in the big picture the
idea was that this data is better kept in static deltas.

Closes: https://github.com/ostreedev/ostree/issues/1014
Closes: #1016
Approved by: jlebon

src/libostree/ostree-repo-commit.c

index a89be88b7257fb8c929e1606aad4e4124a397f62..bcd9c2d91ed9531b5f609ae063ffd0a332545235 100644 (file)
@@ -734,6 +734,17 @@ write_content_object (OstreeRepo         *self,
     }
   else
     {
+      /* Update size metadata if configured */
+      if (indexable && object_file_type == G_FILE_TYPE_REGULAR)
+        {
+          struct stat stbuf;
+
+          if (!glnx_fstat (tmpf.fd, &stbuf, error))
+            return FALSE;
+
+          repo_store_size_entry (self, actual_checksum, unpacked_size, stbuf.st_size);
+        }
+
       /* This path is for regular files */
       if (!commit_loose_regfile_object (self, actual_checksum, &tmpf,
                                         uid, gid, mode,
@@ -743,17 +754,6 @@ write_content_object (OstreeRepo         *self,
                                   ostree_object_type_to_string (OSTREE_OBJECT_TYPE_FILE));
     }
 
-  /* Update size metadata if configured */
-  if (indexable && object_file_type == G_FILE_TYPE_REGULAR)
-    {
-      struct stat stbuf;
-
-      if (!glnx_fstat (tmpf.fd, &stbuf, error))
-        return FALSE;
-
-      repo_store_size_entry (self, actual_checksum, unpacked_size, stbuf.st_size);
-    }
-
   /* Update statistics */
   g_mutex_lock (&self->txn_stats_lock);
   self->txn_stats.content_objects_written++;